package cn.tedu.d18_design;
/*
 本类用于测试单例设计模式1---饿汉式

 1.对本类构造方法私有化，防止外部调用构造方法创建对象
 2.创建全局唯一的对象，也做私有化处理
 3.通过自定义的公共方法将创建好的对象返回(提供get()方法)

 */
public class Singleton1 {
    public static void main(String[] args) {

        MySingle single=MySingle.getMySingle();//类名直接调用get
        MySingle single2=MySingle.getMySingle();

        //测试引用类型变量保存的地址值是否一致
        System.out.println(single==single2);//true


    }

}



//1.创建自己的单例程序
class MySingle{

    /*目的：
     1.不让外界随意实例化(new)本类对象
     */

    private MySingle(){ }

    //在本类内部创建对象，并私有化  静态---公共类返回
    static private MySingle single=new MySingle();

    /*
    之前---创建本类对象，通过对象进行调用

    现在(单例模式)---无法在外部创建本类对象，
    解决：利用静态，被static修饰的资源可以直接被类名调用
     */

    //对外提供一个公共的get()  静态---通过类名直接调用
    static public MySingle getMySingle(){

    /*
    静态不能调用非静态！
    静态不能调用非静态！
    静态不能调用非静态！
     */
        return single;
    }




}
